﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 单例模式
{
    /// <summary>
    /// 为了节约系统资源，有时需要确保系统中某个类只有唯一一个实例，当这个唯一实例创建成功之后，
    /// 我们无法再创建一个同类型的其他对象，所有的操作都只能基于这个唯一实例。
    /// 
    /// 最好的方式： 采用静态内部类
    /// </summary>
    class Singleton
    {
        
        private Singleton()   //私有的构造函数，使得外部不能实例化对象
        { }

        /// <summary>
        /// 外部调用的静态方法，返回单例类
        /// 无线程锁定，性能好；CLR会保证线程安全，，
        /// </summary>
        /// <returns></returns>
        public static Singleton Instance()  
        {
            return HoldClss.instance;   //调的是 静态方法，对象唯一
        }


        /// <summary>
        /// 内部静态类（用来自己实例化），使得 类加载时 并不会实例化
        /// </summary>
        static class HoldClss  
        {
            public static Singleton instance = new Singleton();
        }

       
    }
}
